package com.turing.post.organization.util;

import java.math.BigInteger;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * 商户手续费收入结算策略浮动实体类 商户手续费收入结算策略
 * 
 * @author zxp
 * @Jan 3, 2013
 */
@SuppressWarnings("serial")
@Entity
@Table(name = "MerchantFeeSettlementPolicy")
public class MerchantFeeSettlementPolicy implements java.io.Serializable {
	/**
	 * 状态 草稿
	 */
	public static final String STATUS_DRAFT = "0";
	/**
	 * 状态 批准
	 */
	public static final String STATUS_APPROVE = "1";
	/**
	 * 状态 拒绝
	 */
	public static final String STATUS_REFUSE = "2";
	/**
	 * 状态 过期
	 */
	public static final String STATUS_EXPIRED = "3";

	/**
	 * 基本策略 固定比率
	 */
	public static final String POLICY_FIXEDRATE = "0";
	/**
	 * 基本策略 差额无追溯
	 */
	public static final String POLICY_NORETROSPECTIVE = "1";
	/**
	 * 基本策略 阶梯追溯
	 */
	public static final String POLICY_LADDERRETROSPECTIVE = "2";
	/**
	 * 基本策略 按商户业务类型结算
	 */
	public static final String POLICY_BYBUSINESSTYPE = "3";
	/**
	 * 策略ID
	 */
	private BigInteger feePolicyId;
	/**
	 * 商户ID
	 */
	private String merchantNo;
	/**
	 * 策略描述
	 */
	private String feePolicyName;
	/**
	 * 上次修改时间
	 */
	private Date lastModifyTime;
	/**
	 * 操作员ID
	 */
	private BigInteger OperId;
	/**
	 * 审核时间
	 */
	private Date authTime;
	/**
	 * 审核人ID
	 */
	private BigInteger AuthOperId;
	/**
	 * 审核备注
	 */
	private String authRemark;
	/**
	 * 状态
	 */
	private String status;
	/**
	 * 执行起始日
	 */
	private Date policyStartDate;
	/**
	 * 执行终止日
	 */
	private Date policyEndDate;
	/**
	 * 基本策略
	 */
	private String policy;
	/**
	 * 费率
	 */
	private BigInteger feeRatio;
	/**
	 * 累计消费阀值
	 */
	private BigInteger limitAmount;
	/**
	 * 浮动比率
	 */
	private BigInteger floatFeeRatio;
	/**
	 * 备注
	 */
	private String remark;
	
	/**
	 * 合同编号
	 */
	private BigInteger contractId;
	
	/**
	 * 业务类型
	 */
	private String businessType;
	
	public MerchantFeeSettlementPolicy() {

	}

	@Id
	@Column(name = "FEEPOLICYID")
	public BigInteger getFeePolicyId() {
		return feePolicyId;
	}

	public void setFeePolicyId(BigInteger feePolicyId) {
		this.feePolicyId = feePolicyId;
	}

	@Column(name = "MERCHANTNO")
	public String getMerchantNo() {
		return merchantNo;
	}

	public void setMerchantNo(String merchantNo) {
		this.merchantNo = merchantNo;
	}

	@Column(name = "FEEPOLICYNAME")
	public String getFeePolicyName() {
		return feePolicyName;
	}

	public void setFeePolicyName(String feePolicyName) {
		this.feePolicyName = feePolicyName;
	}

	@Column(name = "LASTMODIFYTIME")
	public Date getLastModifyTime() {
		return lastModifyTime;
	}

	public void setLastModifyTime(Date lastModifyTime) {
		this.lastModifyTime = lastModifyTime;
	}

	@Column(name = "OPERID")
	public BigInteger getOperId() {
		return OperId;
	}

	public void setOperId(BigInteger operId) {
		OperId = operId;
	}

	@Column(name = "AUTHTIME")
	public Date getAuthTime() {
		return authTime;
	}

	public void setAuthTime(Date authTime) {
		this.authTime = authTime;
	}

	@Column(name = "AUTHOPERID")
	public BigInteger getAuthOperId() {
		return AuthOperId;
	}

	public void setAuthOperId(BigInteger authOperId) {
		AuthOperId = authOperId;
	}

	@Column(name = "AUTHREMARK")
	public String getAuthRemark() {
		return authRemark;
	}

	public void setAuthRemark(String authRemark) {
		this.authRemark = authRemark;
	}

	@Column(name = "STATUS")
	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	@Column(name = "POLICYSTARTDATE")
	public Date getPolicyStartDate() {
		return policyStartDate;
	}

	public void setPolicyStartDate(Date policyStartDate) {
		this.policyStartDate = policyStartDate;
	}

	@Column(name = "POLICYENDDATE")
	public Date getPolicyEndDate() {
		return policyEndDate;
	}

	public void setPolicyEndDate(Date policyEndDate) {
		this.policyEndDate = policyEndDate;
	}

	@Column(name = "POLICY")
	public String getPolicy() {
		return policy;
	}

	public void setPolicy(String policy) {
		this.policy = policy;
	}

	@Column(name = "FEERATIO")
	public BigInteger getFeeRatio() {
		return feeRatio;
	}

	public void setFeeRatio(BigInteger feeRatio) {
		this.feeRatio = feeRatio;
	}

	@Column(name = "LIMITAMOUNT")
	public BigInteger getLimitAmount() {
		return limitAmount;
	}

	public void setLimitAmount(BigInteger limitAmount) {
		this.limitAmount = limitAmount;
	}

	@Column(name = "FLOATFEERATIO")
	public BigInteger getFloatFeeRatio() {
		return floatFeeRatio;
	}

	public void setFloatFeeRatio(BigInteger floatFeeRatio) {
		this.floatFeeRatio = floatFeeRatio;
	}

	@Column(name = "REMARK")
	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	@Column(name = "CONTRACTID")
	public BigInteger getContractId() {
		return contractId;
	}

	public void setContractId(BigInteger contractId) {
		this.contractId = contractId;
	}
	
	@Column(name = "BUSINESSTYPE")
	public String getBusinessType() {
		return businessType;
	}

	public void setBusinessType(String businessType) {
		this.businessType = businessType;
	}
}